package com.hello.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.hello.common.core.annotation.Excel;
import com.hello.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 设备供应商对象 rental_suppliers
 * 
 * @author hello
 * @date 2025-08-06
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class RentalSuppliers extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 供应商ID */
    private Long supplierId;

    /** 关联用户ID */
    @Excel(name = "关联用户ID")
    private Long userId;

    /** 供应商编码（唯一标识） */
    @Excel(name = "供应商编码", readConverterExp = "唯=一标识")
    private String supplierCode;

    /** 供应商名称 */
    @Excel(name = "供应商名称")
    private String supplierName;

    /** 供应商类型：1-个人供应商，2-企业供应商，3-平台自营 */
    @Excel(name = "供应商类型：1-个人供应商，2-企业供应商，3-平台自营")
    private Integer supplierType;

    /** 联系人 */
    @Excel(name = "联系人")
    private String contactPerson;

    /** 联系电话 */
    @Excel(name = "联系电话")
    private String contactPhone;

    /** 联系邮箱 */
    @Excel(name = "联系邮箱")
    private String contactEmail;

    /** 联系地址 */
    @Excel(name = "联系地址")
    private String contactAddress;

    /** 公司名称 */
    @Excel(name = "公司名称")
    private String companyName;

    /** 营业执照号 */
    @Excel(name = "营业执照号")
    private String businessLicense;

    /** 税务登记号 */
    @Excel(name = "税务登记号")
    private String taxNumber;

    /** 法人代表 */
    @Excel(name = "法人代表")
    private String legalPerson;

    /** 认证状态：0-未认证，1-已认证，2-认证失败 */
    @Excel(name = "认证状态：0-未认证，1-已认证，2-认证失败")
    private Integer certificationStatus;

    /** 认证时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "认证时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date certificationTime;

    /** 身份证号（个人供应商） */
    @Excel(name = "身份证号", readConverterExp = "个=人供应商")
    private String idCard;

    /** 身份证照片（JSON格式） */
    @Excel(name = "身份证照片", readConverterExp = "J=SON格式")
    private String idCardImages;

    /** 营业执照照片 */
    @Excel(name = "营业执照照片")
    private String businessLicenseImage;

    /** 服务区域（JSON格式） */
    @Excel(name = "服务区域", readConverterExp = "J=SON格式")
    private String serviceAreas;

    /** 配送方式（JSON格式） */
    @Excel(name = "配送方式", readConverterExp = "J=SON格式")
    private String deliveryMethods;

    /** 服务说明 */
    @Excel(name = "服务说明")
    private String serviceDescription;

    /** 信用等级：AAA，AA，A，BBB，BB，B，CCC，CC，C */
    @Excel(name = "信用等级：AAA，AA，A，BBB，BB，B，CCC，CC，C")
    private String creditRating;

    /** 平均评分 */
    @Excel(name = "平均评分")
    private BigDecimal avgRating;

    /** 总订单数 */
    @Excel(name = "总订单数")
    private Long totalOrders;

    /** 总产品数 */
    @Excel(name = "总产品数")
    private Long totalProducts;

    /** 保证金余额 */
    @Excel(name = "保证金余额")
    private BigDecimal depositBalance;

    /** 佣金费率（默认3%） */
    @Excel(name = "佣金费率", readConverterExp = "默=认3%")
    private BigDecimal commissionRate;

    /** 结算周期（天） */
    @Excel(name = "结算周期", readConverterExp = "天=")
    private Long settlementCycle;

    /** 申请成为供应商的原因 */
    @Excel(name = "申请成为供应商的原因")
    private String applicationReason;

    /** 申请时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "申请时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date applicationTime;

    /** 申请状态：0-待申请，1-申请中，2-申请通过，3-申请拒绝 */
    @Excel(name = "申请状态：0-待申请，1-申请中，2-申请通过，3-申请拒绝")
    private Integer applicationStatus;

    /** 状态：0-待激活，1-启用，2-冻结，3-注销 */
    @Excel(name = "状态：0-待激活，1-启用，2-冻结，3-注销")
    private Integer status;

    /** 审核状态：0-待审核，1-审核通过，2-审核拒绝 */
    @Excel(name = "审核状态：0-待审核，1-审核通过，2-审核拒绝")
    private Integer auditStatus;

    /** 审核备注 */
    @Excel(name = "审核备注")
    private String auditRemark;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date auditTime;

    /** 审核人 */
    @Excel(name = "审核人")
    private String auditor;

    public void setSupplierId(Long supplierId) 
    {
        this.supplierId = supplierId;
    }

    public Long getSupplierId() 
    {
        return supplierId;
    }
    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }
    public void setSupplierCode(String supplierCode) 
    {
        this.supplierCode = supplierCode;
    }

    public String getSupplierCode() 
    {
        return supplierCode;
    }
    public void setSupplierName(String supplierName) 
    {
        this.supplierName = supplierName;
    }

    public String getSupplierName() 
    {
        return supplierName;
    }
    public void setSupplierType(Integer supplierType) 
    {
        this.supplierType = supplierType;
    }

    public Integer getSupplierType() 
    {
        return supplierType;
    }
    public void setContactPerson(String contactPerson) 
    {
        this.contactPerson = contactPerson;
    }

    public String getContactPerson() 
    {
        return contactPerson;
    }
    public void setContactPhone(String contactPhone) 
    {
        this.contactPhone = contactPhone;
    }

    public String getContactPhone() 
    {
        return contactPhone;
    }
    public void setContactEmail(String contactEmail) 
    {
        this.contactEmail = contactEmail;
    }

    public String getContactEmail() 
    {
        return contactEmail;
    }
    public void setContactAddress(String contactAddress) 
    {
        this.contactAddress = contactAddress;
    }

    public String getContactAddress() 
    {
        return contactAddress;
    }
    public void setCompanyName(String companyName) 
    {
        this.companyName = companyName;
    }

    public String getCompanyName() 
    {
        return companyName;
    }
    public void setBusinessLicense(String businessLicense) 
    {
        this.businessLicense = businessLicense;
    }

    public String getBusinessLicense() 
    {
        return businessLicense;
    }
    public void setTaxNumber(String taxNumber) 
    {
        this.taxNumber = taxNumber;
    }

    public String getTaxNumber() 
    {
        return taxNumber;
    }
    public void setLegalPerson(String legalPerson) 
    {
        this.legalPerson = legalPerson;
    }

    public String getLegalPerson() 
    {
        return legalPerson;
    }
    public void setCertificationStatus(Integer certificationStatus) 
    {
        this.certificationStatus = certificationStatus;
    }

    public Integer getCertificationStatus() 
    {
        return certificationStatus;
    }
    public void setCertificationTime(Date certificationTime) 
    {
        this.certificationTime = certificationTime;
    }

    public Date getCertificationTime() 
    {
        return certificationTime;
    }
    public void setIdCard(String idCard) 
    {
        this.idCard = idCard;
    }

    public String getIdCard() 
    {
        return idCard;
    }
    public void setIdCardImages(String idCardImages) 
    {
        this.idCardImages = idCardImages;
    }

    public String getIdCardImages() 
    {
        return idCardImages;
    }
    public void setBusinessLicenseImage(String businessLicenseImage) 
    {
        this.businessLicenseImage = businessLicenseImage;
    }

    public String getBusinessLicenseImage() 
    {
        return businessLicenseImage;
    }
    public void setServiceAreas(String serviceAreas) 
    {
        this.serviceAreas = serviceAreas;
    }

    public String getServiceAreas() 
    {
        return serviceAreas;
    }
    public void setDeliveryMethods(String deliveryMethods) 
    {
        this.deliveryMethods = deliveryMethods;
    }

    public String getDeliveryMethods() 
    {
        return deliveryMethods;
    }
    public void setServiceDescription(String serviceDescription) 
    {
        this.serviceDescription = serviceDescription;
    }

    public String getServiceDescription() 
    {
        return serviceDescription;
    }
    public void setCreditRating(String creditRating) 
    {
        this.creditRating = creditRating;
    }

    public String getCreditRating() 
    {
        return creditRating;
    }
    public void setAvgRating(BigDecimal avgRating) 
    {
        this.avgRating = avgRating;
    }

    public BigDecimal getAvgRating() 
    {
        return avgRating;
    }
    public void setTotalOrders(Long totalOrders) 
    {
        this.totalOrders = totalOrders;
    }

    public Long getTotalOrders() 
    {
        return totalOrders;
    }
    public void setTotalProducts(Long totalProducts) 
    {
        this.totalProducts = totalProducts;
    }

    public Long getTotalProducts() 
    {
        return totalProducts;
    }
    public void setDepositBalance(BigDecimal depositBalance) 
    {
        this.depositBalance = depositBalance;
    }

    public BigDecimal getDepositBalance() 
    {
        return depositBalance;
    }
    public void setCommissionRate(BigDecimal commissionRate) 
    {
        this.commissionRate = commissionRate;
    }

    public BigDecimal getCommissionRate() 
    {
        return commissionRate;
    }
    public void setSettlementCycle(Long settlementCycle) 
    {
        this.settlementCycle = settlementCycle;
    }

    public Long getSettlementCycle() 
    {
        return settlementCycle;
    }
    public void setApplicationReason(String applicationReason) 
    {
        this.applicationReason = applicationReason;
    }

    public String getApplicationReason() 
    {
        return applicationReason;
    }
    public void setApplicationTime(Date applicationTime) 
    {
        this.applicationTime = applicationTime;
    }

    public Date getApplicationTime() 
    {
        return applicationTime;
    }
    public void setApplicationStatus(Integer applicationStatus) 
    {
        this.applicationStatus = applicationStatus;
    }

    public Integer getApplicationStatus() 
    {
        return applicationStatus;
    }
    public void setStatus(Integer status) 
    {
        this.status = status;
    }

    public Integer getStatus() 
    {
        return status;
    }
    public void setAuditStatus(Integer auditStatus) 
    {
        this.auditStatus = auditStatus;
    }

    public Integer getAuditStatus() 
    {
        return auditStatus;
    }
    public void setAuditRemark(String auditRemark) 
    {
        this.auditRemark = auditRemark;
    }

    public String getAuditRemark() 
    {
        return auditRemark;
    }
    public void setAuditTime(Date auditTime) 
    {
        this.auditTime = auditTime;
    }

    public Date getAuditTime() 
    {
        return auditTime;
    }
    public void setAuditor(String auditor) 
    {
        this.auditor = auditor;
    }

    public String getAuditor() 
    {
        return auditor;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("supplierId", getSupplierId())
            .append("userId", getUserId())
            .append("supplierCode", getSupplierCode())
            .append("supplierName", getSupplierName())
            .append("supplierType", getSupplierType())
            .append("contactPerson", getContactPerson())
            .append("contactPhone", getContactPhone())
            .append("contactEmail", getContactEmail())
            .append("contactAddress", getContactAddress())
            .append("companyName", getCompanyName())
            .append("businessLicense", getBusinessLicense())
            .append("taxNumber", getTaxNumber())
            .append("legalPerson", getLegalPerson())
            .append("certificationStatus", getCertificationStatus())
            .append("certificationTime", getCertificationTime())
            .append("idCard", getIdCard())
            .append("idCardImages", getIdCardImages())
            .append("businessLicenseImage", getBusinessLicenseImage())
            .append("serviceAreas", getServiceAreas())
            .append("deliveryMethods", getDeliveryMethods())
            .append("serviceDescription", getServiceDescription())
            .append("creditRating", getCreditRating())
            .append("avgRating", getAvgRating())
            .append("totalOrders", getTotalOrders())
            .append("totalProducts", getTotalProducts())
            .append("depositBalance", getDepositBalance())
            .append("commissionRate", getCommissionRate())
            .append("settlementCycle", getSettlementCycle())
            .append("applicationReason", getApplicationReason())
            .append("applicationTime", getApplicationTime())
            .append("applicationStatus", getApplicationStatus())
            .append("status", getStatus())
            .append("auditStatus", getAuditStatus())
            .append("auditRemark", getAuditRemark())
            .append("auditTime", getAuditTime())
            .append("auditor", getAuditor())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
